package QianFeng03;

/**
 * 代码块：
 * 1、普通代码块，在方法中写的代码块
 * 2、构造块，是在类中定义的代码块，在创建对象时被调用，优于构造方法执行
 * 3、在类中使用static声明的代码块称为静态代码块
 *    在第一次使用的时候被调用（创建对象），只会执行一次，优于构造块
 *    我们在项目开发中，通常会使用静态代码块来初始化只调用一次的数据
 * 4、同步代码块
 * 小结：重点会使用的顺序是：静态代码块、普通代码块、同步代码块、构造代码块
 */
public class Test8 {
    public static void main(String[] args) {
        //普通代码块
        {
            Student s = new Student();//先调用静态块
            Student s1 = new Student();//不调用静态块
        }
        String info = "局部变量";
        System.out.println(info);
    }



}

class Student {
    //在方法中写的代码，这就是普通代码块
    public void study() {
        //限制作用域
        int i = 10;
        System.out.println("我是普通代码块！");
    }

    //属于构造块，又是方法，就是构造方法
    public Student() {
        System.out.println("我是构造方法！");
    }

    //直接在类型书写的代码就是——构造块
    {
        System.out.println("我是构造代码块！");
    }

    //只会在第一次使用时被调用
    static {
        System.out.println("我是静态构造块！");
    }

}